package com.ztstudy.poi.controller;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.Pictures;
import com.deepoove.poi.data.TextRenderData;
import com.deepoove.poi.data.Texts;
import com.deepoove.poi.data.style.Style;
import com.ztstudy.poi.pojo.Student;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;

public class GenerateWordController {

    //这是生成文档里文字和图片的主方法
    public static void main(String[] args) throws IOException {
        Student student = new Student();
        student.setName("周少(江西彭于晏)");
        student.setAge(18);
        student.setSex("男");
        student.setId("2024303111");
        student.setIntroduction("周少是一位非常杰出的人物，才能出众、思维敏锐。在各个领域都展现出卓越的能力，令人钦佩。" +
                "他总能用创新的观点和独到的见解给身边的人带来启发和激励，尤其在团队中，他的领导力和凝聚力使得大家更好地合作，共同进步。" +
                "他的努力和成就也为周围的人树立了榜样，激励着大家追求卓越！");

        Style style = new Style();
        style.setFontFamily("仿宋");
        style.setColor("00FF00");
        style.setItalic(true);

        String text = "周少是一位非常杰出的人物，才能出众、思维敏锐。在各个领域都展现出卓越的能力，令人钦佩。" +
                "他总能用创新的观点和独到的见解给身边的人带来启发和激励，尤其在团队中，他的领导力和凝聚力使得大家更好地合作，共同进步。" +
                "他的努力和成就也为周围的人树立了榜样，激励着大家追求卓越！";

        //生成数据
        HashMap<String, Object> date = new HashMap<>() {{
            // 图片可以在模板中直接设置模板图片，在word的图片右键点击查看可选文字中改为{{img}}标签，图片直接按模板图片的大小位置填入
            //图片推荐使用Pictures工厂模式构建
            put("img", Pictures.ofUrl("https://wallpaperm.cmcm.com/aa8cca205650dff98e7d6cc79ed7f2b4.jpg").create());

            put("student", student);
            put("text", new TextRenderData(text, style));// 自定义样式

            put("text2", Texts.of(text).style(style).color("FF0000").create());//链式表达式来定义内容
            put("link", Texts.of("我是GPT-4").link("https://cat.chatavx.com/#/home").create());

        }};

        // 生成模板
        XWPFTemplate template = XWPFTemplate
                .compile("D:/Graduation_Word/poi_study/poi/src/main/resources/template.docx")
                .render(date);
        template.write(new FileOutputStream("D:/Graduation_Word/poi_study/poi/src/main/resources/人物介绍.docx"));
        //template.write(new FileOutputStream("D:/Graduation_Word/poi_study/poi/src/main/resources/output.docx"));

        template.close();
    }

}
